package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 分类与管理service接口类
 */

public interface ManageService {
    /**
     * 查询所有一级分类列表
     *
     * @return
     */
    public List<BaseCategory1> getCategory1List();

    /**
     * 根据一级分类查询二级分类列表
     *
     * @param category1Id
     * @return
     */
    public List<BaseCategory2> getCategory2List(Long category1Id);

    /**
     * 根据二级分类查询三级分类列表
     *
     * @param category2Id
     * @return
     */
    public List<BaseCategory3> getCategory3List(Long category2Id);

    /***
     * 根据分类查询所有规格信息列表:查询1 2 3级分类对应的规格列表，若只查询某个分类下的规格列表则其他分类的值传0
     * @param category1Id
     * @param category2Id
     * @param category3Id
     * @return
     */
    public List<BaseAttrInfo> getBaseAttrInfoList(Long category1Id, Long category2Id, Long category3Id);

    /**
     * 新增规格
     *
     * @param baseAttrInfo
     * @return
     */
    public BaseAttrInfo addAttrInfo(BaseAttrInfo baseAttrInfo);

    /**
     * 通过平台属性id查询平台属性值的列表信息
     * @param id
     * @return
     */
    public List<BaseAttrValue> getValueById(Long id);

    /**
     * 分页查询SpuInfo的信息
     * @param category3Id
     * @param page
     * @param size
     * @return
     */
    public IPage<SpuInfo> getSpuInfoList(Long category3Id,Integer page,Integer size);

    /**
     * 分页查询品牌信息
     * @param page
     * @param size
     * @return
     */
    public IPage<BaseTrademark> getTrademarkList(Integer page, Integer size);

    /**
     * 查询所有销售属性信息
     * @return
     */
    public List<BaseSaleAttr> getBaseSaleAttr();

    /**
     * 查询所有品牌信息
     * @return
     */
    public List<BaseTrademark> getTrademark();

    /**
     * 保存spu
     * @param spuInfo
     * @return
     */
    public SpuInfo saveSpuInfo(SpuInfo spuInfo);

    /**
     * 添加品牌
     * @param baseTrademark
     * @return
     */
    public void addBaseTrademark(BaseTrademark baseTrademark);
    /**
     * 根据id查询品牌
     * @param id
     * @return
     */
    public BaseTrademark getBaseTrademarkById(Long id);

    /**
     * 修改品牌
     * @param baseTrademark
     */
    public void editBaseTrademark(BaseTrademark baseTrademark);

    /**
     * 删除品牌
     * @param id
     */
    public void deleteBaseTrademark(Long id);

    /**
     * 查询spu的图片列表
     * @param spuId
     * @return
     */
    public List<SpuImage> getSpuImageList(Long spuId);

    /**
     * 查询销售属性列表
     * @param spuId
     * @return
     */
    public List<SpuSaleAttr> getSpuSaleAttrList(Long spuId);

    /**
     * 保存sku信息
     * @param skuInfo
     * @return
     */
    public SkuInfo saveSkuInfo(SkuInfo skuInfo);

    /***
     * 分页查询skuinfo信息
     * @param page
     * @param size
     * @return
     */
    public IPage<SkuInfo> list(Integer page, Integer size);

    /**
     * sku商品上架/下架
     * @param skuId
     * @param status
     */
    public void UpOrDown(Long skuId,Integer status);


}